/*1^
 Toy Story (1995)^
  ^
  81 minutes^
  March 20, 2001^
  1995^
  English ^
  Adventure|Animation|Children|Comedy|Fantasy ^
  Tom Hanks|Tim Allen|Don Rickles|Jim Varney|Wallace Shawn|John Ratzenberger|Annie Potts|John Morris|Erik von Detten|Laurie Metcalf|R. Lee Ermey|Sarah Freeman|Penn Jillette|Tom Hanks|Tim Allen|Don Rickles|Jim Varney|Wallace Shawn ^
  John Lasseter
*/
/*电影表分隔符 ^
 * @param mid       电影ID
 * @param name      电影名称
 * @param descri    电影描述
 * @param timelong  电影时长
 * @param shoot     拍摄时间
 * @param issue     发行时间
 * @param language  电影语言
 * @param genres    电影类别  用"|" 分割多个类别
 * @param actors    电影演员  用"|" 分割多个类别
 * @param directors 电影导演
 */
//通过反射反射确定（创建一个样例类）rdd to DF
case class Movie(
                  mid: Int,
                  name: String,
                  descri: String,
                  timelong: String,
                  shoot: String,
                  issue: String,
                  language: String,
                  genres: String,
                  actors: String,
                  directors: String
                )
/*电影评分表分割符 ，
* [Rating.csv][电影评分表]
* 1,
* 1339,
* 3.5,
* 1260759125
*
* @param uid       用户ID
* @param mid       电影ID
* @param score     电影评分
* @param timestamp 电影评分时间
*/
case  class MovieRating(
                       uid:Int,
                       mid:Int,
                       score:Double,
                       timestamp:Long
                       )
/**电影标签表 分割符，
 * [Tag.csv][电影标签表]
 * 15,100365,documentary,1425876220
 *
 * @param uid       用户ID
 * @param mid       电影ID
 * @param tag       电影标签
 * @param timestamp 评分时间
 */
case class Tag(uid: Int,
               mid: Int,
               tag: String,
               timestamp: Long)

/**
 * 链接MongoDB必备配置
 * 样例类
 * @param uri 链接地址
 * @param db  库
 */
case class MongoConfig(uri: String, db: String)


/*
喜剧,244,4.6
喜剧,284,3.6
喜剧,944,2.6
喜剧,747,2.5
喜剧,84,2.1
喜剧,40,1.6
===>
喜剧
244,4.6
284,3.6
944,2.6
747,2.5
84,2.1
40,1.6*/
/**
 * genres:类别
 * recs:(mid:Int,score:Double)
 */

//case class GenresRecommendation(genres:String,(mid:Int,score:Double)) ==
case class GenresRecommendation(genres:String,recs: Seq[Recommendation])

case class Recommendation(mid:Int,score:Double)

case class UserRecs(uid:Int,recs: Seq[Recommendation])

case class MovieRecs(mid:Int,recs: Seq[Recommendation])

